/*
 * Esta clase Obtiene el Puntaje q obtiene el Grupo familiar en su respectiva solicitud.
 */
package com.techopropio.bfh.service;

/**
 *
 * @author Herminio
 */
public class Puntaje {
    
    int nDep; /* Numero de Dependientes.- Por cada dependiente hasta un máximo de (60) puntos*/
    int nDis; /* Numero de Personas Discapacitadas.- Por cada miembro del Grupo 
                 Familiar con discapacidad permanente, excluyendo al Jefede familia 
                 hasta un máximo de veinte (20) puntos.*/
    String JH;    /* Jefatura de Hogar.- 
                                       10 Jefe de Familia solo.= "JFHS" 
                                       15 Jefa de Familia sola.  "JFMS"
                                        5 Bonificación por Jefe de Familia con "JFD"
                                        discapacidad permanente o mayor de sesenta y cinco (65) años de edad. */
    int nAH;    /* Ahorro adicional al Ahorro minimo:
                        0.5 o la fracción correspondiente 
                  ( Por cada cincuenta (50) Nuevos Soles de ahorro adicional al Ahorro Mínimo 
                    hasta un máximo de veintiocho (28) puntos )*/
    int nPA;    /*  Permanencia del Ahorro.-
                        2 o la fracción correspondiente 
                   ( Al Grupo Familiar, por cada mes de permanencia del ahorro, desde la fecha 
                     de apertura de la cuenta de ahorros. Este puntaje es acumulativo, 
                     hasta por un máximo de veinticuatro (24) puntos.)*/
    int nSA;    /*Solicitud de Asignación Sucesiva:
                    5 Al Grupo Familiar que no haya sido logrado el acceso al BFH en la 
                      Asignación que es participó y volviera a solicitar el acceso al BFH en una siguiente 
                      Asignación. Este puntaje acumulable hasta un máximo de veinte (20) puntos por cada año calendario. */
    

public double calcularPuntaje(){
    
    int p1,p2,p3;
    double p4,p5,p6;
    
    //La primera evaluacion numero de dependientes
    p1 = obtenerPNumD();
    //El numero de discapacitados sin contar al JF
    p2 = obtenerPNumDisc();
    //El Puntaje por el tipo de Jefe de Familia
    p3 = obtenerPJH();
    //El puntaje Ahorro Adicional
    p4 = obtenerPAhorro();
    //El puntaje por permanencia de ahorro
    p5 = obtenerPPerA();
    //El puntaje por asignacion sucesiva
    p6 = obtenerPSoliciS();
    
    return p1+p2+p3+p4+p5+p6;
}

    public int obtenerPNumD(){
        if(nDep<=6){
            return nDep*10;
        }else{
            return 60;//maximo puntaje por esta evaluacion
        }
    }
    
    public int obtenerPNumDisc(){
        if(nDis<=2){
            return nDis*10;
        }else{
            return 20;//puntaje max por esta evaluación
        }
    }
    
    public int obtenerPJH(){
          if(JH.equals("JFHS")){
            return 10;
          }else if(JH.equals("JFMS")){
            return 15;
          }else if(JH.equals("JFD")||JH.equals("JFSM")){
            return 5;
          }else{
              return 0;
          } 
    }
    
    
    public double obtenerPAhorro(){
        int AT=0,Amin=0;
        int Areal = AT-Amin;//Ahorro total menos ahorro minimo 
            
            if(Areal<=2800){
                return (Areal*0.5)/50;
            }else{
                return 28;//el puntaje maximo
            }
    }
    
    public double obtenerPPerA(){
        
        int Treal=0;//Es el tiempo en meses cuando el dinero aun permanecia
        if(Treal<=12){
            return Treal*2;
        }else{
            return 24;//Puntaje maximo por permanencia de ahorro
        }
    }
    
    public int obtenerPSoliciS(){
        int nPos=0;//numero de Postulaciones
        if(nPos<=4){
            return nPos*5;
        }else{
            return 20;
        }
    }
}
